package com.cloud.pole.shop.service.order;

import java.util.Map;

import com.cloud.pole.shop.model.entity.order.ShopOrder;
import com.cloud.pole.shop.model.entity.order.ShopOrderAdmin;
import com.cloud.pole.shop.model.vo.UserCenterDataVo;
import com.cloud.pole.shop.model.vo.order.ShopOrderPageVo;
import com.cloud.pole.shop.model.vo.order.ShopOrderToConfirmVo;
import com.cloud.pole.shop.model.vo.order.ShopRecommendOrderPageVo;
import com.cloud.pole.shop.model.vo.order.ShopUserOrderDetailVo;
import com.cloud.pole.shop.model.vo.order.ShopUserOrderPageVo;
import com.github.pagehelper.PageInfo;
/*
*2019年2月21日
*cloud-shop
*author:frank-chen
*/
public interface OrderService {
		
	public String addOrder(String token, String cartIds, String cartParams, String marketCode) throws Exception;
	
	public ShopOrderToConfirmVo getToConfirmOrderList(String token, String orderIds) throws Exception;	
	
	public Long confirmOrders(String token, String orderIds, String userRemak, Integer addrId, Integer logisticsType, Integer payMethod, String recommandMarketCode) throws Exception;
	
	public String immediatePurchase(String token, Integer specId, Integer productNum) throws Exception;
	
	public ShopUserOrderPageVo getPageUserOrderList(String token, Integer searchType, Integer pageSize, Integer pageNum) throws Exception;
	
	public ShopOrderPageVo getPageShopOrderList(String token, Integer shopId, Integer searchType, Integer pageSize, Integer pageNum) throws Exception;

	public ShopUserOrderDetailVo getUserOrderDetail(String token, String orderId) throws Exception;
	 /**
	 * 后台分页查询列表
	 * <p>Title: selectPageShopOrderAdminVoList</p>  
	 * <p>Description: </p>  
	 * @param params
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public PageInfo<ShopOrderAdmin> selectPageShopOrderAdminVoList(String token, Map<String, Object> map, Integer pageNo,
			Integer pageSize) throws Exception;
	
	public Boolean confirmReceiveGoods(String token, String orderId) throws Exception;
	
	public Boolean delOrder(String token, String orderId) throws Exception;
	
	public String getOrderStatusStr(int orderStatus) throws Exception;
	
	public String getPayStatusStr(int payStatus) throws Exception;
	
	public String getLogisticsStatusStr(int logisticsStatus) throws Exception;

	public String getLogisticsTypeStr(int logisticsType) throws Exception;

	public String getPayMethodStr(int payMethod) throws Exception;

	public ShopOrderAdmin selectOrderAdminById(String token, String id) throws Exception;
	
	public Boolean confirmDeliverOffLine(String token, String orderId) throws Exception;

	public int addShopOrderShippingAddress(ShopOrder shopOrder) throws Exception;

	public UserCenterDataVo getUserCenterData(String token) throws Exception;

	public ShopOrder selectById(String token, String orderSn) throws Exception;

	public Boolean cancelOrder(String token, String orderId) throws Exception;

	public ShopRecommendOrderPageVo getRecommendOrderList(String token, Integer searchType, Integer pageSize, Integer pageNum) throws Exception;

	public String createRechargeOrder(String token, Integer specId, Integer productNum, String openId, String mobile) throws Exception;
	
	public Boolean synOrderDelay(String orderSn) throws Exception;

}
